﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace zielonka.co.uk.extensions.system.collections
{
    // Description: its cool!!
    /*
     
    * Allows me to replace:

    if(reallyLongIntegerVariableName == 1 || 
        reallyLongIntegerVariableName == 6 || 
        reallyLongIntegerVariableName == 9 || 
        reallyLongIntegerVariableName == 11)
    {
        // do something....
    }

    and

    if(reallyLongStringVariableName == "string1" || 
        reallyLongStringVariableName == "string2" || 
        reallyLongStringVariableName == "string3")
    {
        // do something....
    }

    and

    if(reallyLongMethodParameterName == SomeEnum.Value1 || 
        reallyLongMethodParameterName == SomeEnum.Value2 || 
        reallyLongMethodParameterName == SomeEnum.Value3 || 
        reallyLongMethodParameterName == SomeEnum.Value4)
    {
        // do something....
    }
    With:

    if(reallyLongIntegerVariableName.In(1,6,9,11))
    {
            // do something....
    }

    and

    if(reallyLongStringVariableName.In("string1","string2","string3"))
    {
            // do something....
    }

    and

    if(reallyLongMethodParameterName.In(SomeEnum.Value1, SomeEnum.Value2, SomeEnum.Value3, SomeEnum.Value4)
    {
        // do something....
    }
     
    */

    public static partial class ListExtensions
    {
        public static bool In<T>(this T source, params T[] list)
        {
            if (null == source) throw new ArgumentNullException("source");
            return list.Contains(source);
        }
    }
}
